package com.mmall.service;

import com.github.pagehelper.PageInfo;
import com.mmall.common.ServerResponse;
import com.mmall.pojo.Product;
import com.mmall.vo.ProductDetailVo;

public interface IProductService {

    /**
     * 更新和新增商品信息,根据传递的id来进行判断 如果传递过来的信息包括商品id则更新山沟,如果不包括则新增商品
     * @param product 商品信息
     * @return
     */
    ServerResponse saveOrUpdateProduct(Product product);

    /**
     * 更新商品状态 (状态为1为上架状态,0为下架状态)
     * @param productId 商品id
     * @param status 状态
     * @return
     */
    ServerResponse<String> setSaleStatus(Integer productId, Integer status);

    /**
     * 获取商品的详情
     * @param productId
     * @return
     */
    ServerResponse<ProductDetailVo> manageProductDetail(Integer productId);

    /**
     * mybatis分页查询
     * @param pageNum 当前页数 默认1
     * @param pageSize 每页展示数量 默认10
     * @return
     */
    ServerResponse<PageInfo> getProductList(int pageNum, int pageSize);

    /**
     * 管理员用户：后台搜索功能+分页
     * @param productName 商品名
     * @param productId 商品id
     * @param pageNum 当前页数 默认1
     * @param pageSize 每页展示数量 默认10
     * @return
     */
    ServerResponse<PageInfo> searchProduct(String productName, Integer productId, int pageNum, int pageSize);

    /**
     * 通过商品id查询商品
     * @param productId
     * @return
     */
    ServerResponse<ProductDetailVo> getProductDetail(Integer productId);

    /**
     * 普通用户：搜索商品+分页
     * @param keyword 商品名
     * @param categoryId 分页id
     * @param pageNum 分页：当前页
     * @param pageSize 分页：每页显示数量
     * @param orderBy 排序方式
     * @return
     */
    ServerResponse<PageInfo> getProductKeywordCategory(String keyword, Integer categoryId, int pageNum, int pageSize,String orderBy);
}
